<?php
/************************************************
 *
 *   说明: 提供一些常用的、不知道如何分类的函数
 * author: fenghao
 *   date: 2012-04-27
 *
 ************************************************/

class Utility{

    /**
     * 给定时间段的起始时间、结束时间、时间间隔，判断给定的时间属于那个时间段，返回那个时间段的起始时间
     *
     * @param string $time_start    时间段的起始时间
     * @param string $time_end      时间段的结束时间
     * @param int    $time_step     时间间隔，单位是分钟
     * @param string $time_set      给定的时间，默认使用当前时间
     * @return mixed  返回给定的时间所在时间段的起始时间，如果超过时间范围，返回false
     *
     * 使用说明：
     * echo "now is ".date("Y-m-d H:i:s")."<br />\n";       //显示   "2012-04-27 10:24:12"
     * echo getTimeSlice("10:25", "23:30", 10);             //retrun false
     * echo getTimeSlice("10:25", "23:30", 10, "10:26");    //return "2012-04-27 10:25:00"
     **/

    static function getTimeSlice($time_start, $time_end, $time_step, $time_set=''){

        //将起止时间转换为timestamp形式
        $timestamp_start = strtotime($time_start);
        $timestamp_end = strtotime($time_end);
        
        //将时间间隔转换为秒
        $second = $time_step * 60;

        //设置给定的时间
        if($time_set == ''){
            $time_set = time();
        }else{
            $time_set = strtotime($time_set);
        }

        //判断给定时间是否在时间段内
        if($time_set < $timestamp_start || $time_set > $timestamp_end){
            return false;
        }
        //echo date("Y-m-d H:i:s", $timestamp_start);
        //echo date("Y-m-d H:i:s", $timestamp_end);
        //echo $second;
        //echo date("Y-m-d H:i:s", $time_set);
        
        $tmp = $timestamp_start;
        while($tmp < ($timestamp_end + $second)){
            if($tmp > $time_set){
                return date("Y-m-d H:i:s", ($tmp-$second));
            }
            $tmp += $second;
        }
        return false;
    }

}


?>
